package orxatas.travelme.manager;

import java.util.ArrayList;

import android.graphics.Bitmap;

import orxatas.travelme.activity.AsyncActivity;
import orxatas.travelme.entity.Entry;
import orxatas.travelme.sync.AsyncNoticeCode;
import orxatas.travelme.sync.SyncEntry;
import orxatas.travelme.sync.SyncData.SyncDataType;

public class EntryManager {
	
	private AsyncActivity asyncActivity;
	//static private ArrayList<Integer> entrys;
	
	private SyncEntry syncEntry;
	
	public EntryManager(AsyncActivity asyncActivity){
		this.asyncActivity = asyncActivity;
		syncEntry = new SyncEntry(this, asyncActivity);	
	}
	
	public void synchronize(SyncDataType nextData){
		syncEntry.synchronize(nextData);
	}
	
	public Entry getEntryNotEnded(int idEntry){
		
		return syncEntry.getEntryNotEnded(idEntry);
	}
	
	public Entry getEntry(int idEntry){
		
		return syncEntry.getEntry(idEntry);
	}
	public ArrayList<Integer> getEntries(){

		return syncEntry.getEntryList();
	}

	public ArrayList<Integer> getEntries(int idUser){
		//TODO
		/*entrys = syncEntry.getEntryList();
		ArrayList<Integer> list = new ArrayList<Integer>();*/

		return syncEntry.getEntryList();
	}
	
	public void addDateToEntry(int idEntry, int date){
		syncEntry.addDateTo(idEntry, date);
	}
	
	public void removeDateFromEntry(int idEntry){
		//TODO
		//syncEntry.removeDateFromEntry(idEntry);
	}
	
	public void addFeelingToEntry(int idEntry, int feeling){
		syncEntry.addFeelingTo(idEntry, feeling);
	}
	
	public void addPhotoToEntry(int idEntry, String path){
		syncEntry.addPhotoTo(idEntry, path);
	}
	
	public void removePhotoFromEntry(int idEntry, int idPhoto){
		syncEntry.removePhotoOf(idEntry, idPhoto);
	}
	
	public Entry addNewEntry(int idGroup, int idPlace){
		
		Entry entry = syncEntry.newEntry(idGroup, idPlace);
		return entry;
	}
	
	public void setOptoinalText(int idEntry, String opcionalText){

		syncEntry.addOptionalTextTo(idEntry, opcionalText);
	}
	
	public void sendEntry(int idEntry){
		syncEntry.sendEntry(idEntry);
	}
	
	public void discartEntry(int idEntry){
		syncEntry.discardEntry(idEntry);
	}
	
	/**
	 * Se le avisa de que hay una sincronización en curso. Convenio: Sólo utilizar cuando por su clase de sincronización.
	 * */
	public void syncInProgress(){

		asyncActivity.syncStarted();
	}
	
	/**
	 * Se le avisa de que la sincronización en curso ha terminado. Convenio: Sólo utilizar cuando por su clase de sincronización.
	 * */
	public void syncInProgressEnd(){
		
		asyncActivity.syncEnded();
	}
	/**
	 * Evento asyncrono para cambios en los grupos.
	 * */
	public void asyncNotice(AsyncNoticeCode code){
		asyncActivity.asyncNotice(code);
	}
}